
#pragma once

#include <map>
#include <memory>
#include <string>
#include <vector>

#include <visualization_msgs/msg/interactive_marker.hpp>
#include <visualization_msgs/msg/interactive_marker_update.hpp>
#include <visualization_msgs/msg/interactive_marker_init.hpp>

#include <interactive_markers/interactive_marker_client.hpp>

#include <rviz_common/display.hpp>
#include <rviz_common/properties/bool_property.hpp>
#include <rviz_common/properties/status_property.hpp>

#include <rviz_default_plugins/displays/interactive_markers/interactive_marker.hpp>
#include <rviz_default_plugins/displays/marker/markers/marker_base.hpp>
#include <rviz_default_plugins/displays/interactive_markers/interactive_marker_namespace_property.hpp>
#include <rviz_default_plugins/displays/interactive_markers/interactive_marker_display.hpp>


// using rviz_common::Display;
// using rviz_default_plugins::displays::InteractiveMarker;
// using rviz_default_plugins::displays::InteractiveMarkerNamespaceProperty;
using rviz_default_plugins::displays::InteractiveMarkerDisplay;


namespace rviz_custom_plugins {

namespace displays {

class RVIZ_DEFAULT_PLUGINS_PUBLIC CustomInteractiveMarkerDisplay : public InteractiveMarkerDisplay
{
    Q_OBJECT

public:
    CustomInteractiveMarkerDisplay();

    void setStatus(rviz_common::properties::StatusProperty::Level level, const QString & name, const QString & text) override;
};  // class InteractiveMarkerDisplay


}

}